from qqbot import QQBotSlot as qqbotslot, RunBot
"""
如果qqbot库无法满足需求，还可以考虑：
使用酷 Q 等机器人平台及其 Python SDK
通过 WebQQ 的 API 接口（但 WebQQ 已逐渐停止服务）
使用企业 QQ 的开放平台接口
"""
import os
import time


class QQMessageSender:
    def __init__(self, bot):
        self.bot = bot

    def send_private_message(self, qq_number, content):
        """发送私聊消息"""
        try:
            # 获取用户对象
            user = self.bot.List('user', qq_number)[0]
            # 发送消息
            self.bot.SendTo(user, content)
            print(f"已向QQ: {qq_number} 发送消息: {content}")
            return True
        except Exception as e:
            print(f"发送私聊消息失败: {str(e)}")
            return False

    def send_group_message(self, group_number, content):
        """发送群消息"""
        try:
            # 获取群对象
            group = self.bot.List('group', group_number)[0]
            # 发送消息
            self.bot.SendTo(group, content)
            print(f"已向群: {group_number} 发送消息: {content}")
            return True
        except Exception as e:
            print(f"发送群消息失败: {str(e)}")
            return False

    def send_file_to_private(self, qq_number, file_path):
        """向私聊发送文件"""
        try:
            if not os.path.exists(file_path):
                print(f"文件不存在: {file_path}")
                return False

            # 获取用户对象
            user = self.bot.List('user', qq_number)[0]
            # 发送文件
            self.bot.SendFileTo(user, file_path)
            print(f"已向QQ: {qq_number} 发送文件: {file_path}")
            return True
        except Exception as e:
            print(f"发送私聊文件失败: {str(e)}")
            return False

    def send_file_to_group(self, group_number, file_path):
        """向群发送文件"""
        try:
            if not os.path.exists(file_path):
                print(f"文件不存在: {file_path}")
                return False

            # 获取群对象
            group = self.bot.List('group', group_number)[0]
            # 发送文件
            self.bot.SendFileTo(group, file_path)
            print(f"已向群: {group_number} 发送文件: {file_path}")
            return True
        except Exception as e:
            print(f"发送群文件失败: {str(e)}")
            return False


@qqbotslot
def onQQMessage(bot, contact, member, content):
    """消息回调函数，收到消息时触发"""
    sender = QQMessageSender(bot)

    # 示例：收到"发送测试消息"时，自动回复
    if content == "发送测试消息":
        sender.send_private_message(contact.qq, "这是一条自动回复的测试消息")

    # 示例：收到"发送文件"时，发送指定文件
    if content == "发送文件":
        test_file = "test.txt"
        # 创建测试文件
        with open(test_file, "w", encoding="utf-8") as f:
            f.write("这是一个测试文件")
        sender.send_file_to_private(contact.qq, test_file)
        # 清理测试文件
        if os.path.exists(test_file):
            os.remove(test_file)


if __name__ == '__main__':
    # 运行机器人
    print("QQ机器人启动中...")
    print("请扫描弹出的二维码登录QQ")
    RunBot()
# 当前的库无法使用了